iT邦幫忙

2022 iThome 鐵人賽

DAY 29
0
DevOps

不想吃土嗎?就利用開源軟體打造CICD Pipeline吧!系列 第 29

Day 29: Ansible鐵人賽特別篇!Ansible Vault與Jenkins聯乘自動化!

  • 分享至 

  • xImage
  •  

來到真真正正的Ansible最後一回。今天我們就把所有東西完全自動化部署到伺服器上面吧!

新增密碼檔案

昨天我們執行Ansible Playbook的時候,我們需要在過程中輸入密碼。如果我們要自動化整個過程,那麽我們就需要讓Jenkins在部署時懂得輸入密碼。而一貫的做法來說,我們都會把這個密碼儲存在Jenkins的Credentials中。所以我們現在就把相關的解密密碼加到Credentials中吧!

首先,當執行Ansible Playbook時,除了可以用--ask-vault-pass以外,其實亦可以用檔案形式去傳入我們的密碼。因此我們先建立一個密碼檔案vault-password.txt,然後在其中輸入我們的密碼並儲存。

然後如同過往幾章一般,加入一個新Credentials。然後使用Secret file並上傳我們的vault-password.txt,並在ID一欄輸入vault-auth-key

按下Create新增Credential。
https://ithelp.ithome.com.tw/upload/images/20221007/20152012oGDoNQQRUF.png

更新Jenkinsfile

之前我們已經成功加入了Ansible的Stage到Jenkinsfile中。現在,我們只需要再為這個Stage進行部署時,加入存取密碼的步驟即可。

把本來的Ansible Stage更改為以下內容。

stage('Ansible Deployment') {
            steps {
                withCredentials([sshUserPrivateKey(credentialsId: 'ansible-auth-key', keyFileVariable: 'ansible_auth_key', usernameVariable: 'ansible_user')]) {
                    withCredentials([file(credentialsId: 'vault-auth-key', variable: 'vault_auth_key')]) {
                        sh "ansible-playbook -i \"${instancePublicIp}\", main.yml -u \"${ansible_user}\" --private-key \"${ansible_auth_key}\" --vault-password-file \"${vault_auth_key}\""
                    }
                }
            }
        }
  • withCredentials([file(credentialsId: 'vault-auth-key', variable: 'vault_auth_key')]) {…}: 這裡從Jenkins的Credentials中取得剛剛的vault-auth-key
  • --vault-password-file \"${vault_auth_key}\": 執行Ansible Playbook時,傳入密碼檔案

然後,Commit、上傳、執行Pipeline。

完成!成功進行了部署!
https://ithelp.ithome.com.tw/upload/images/20221007/20152012FUoZM7hpTL.png

試一下登陸到頁面,成功返回了404!
https://ithelp.ithome.com.tw/upload/images/20221007/20152012U5fKANSNd6.png

再試一下輸入密碼的效果。哎喲,挺不錯哦!
https://ithelp.ithome.com.tw/upload/images/20221007/201520127YE0L7y6l2.png

小結

終於,我們有了一套完整的工具去進行由開發到部署的所有自動化步驟。是次系列亦都終於迎來了尾聲。各位看官且慢別走!明天我們會再加碼介紹一些好用的工具,並總結一下我們這三十天鐵人賽得到的經驗,記得不要錯過哦。

題外話

這三十天,說長不長,說短不短。參賽之前從來没有想過,原來我也可以每天瘋狂輸出數百字以上。明天,終於是最後一天了,過了明天我就好好的休息一陣子了!


上一篇
Day 28: Ansible番外篇!Ansible Vault!
下一篇
Day 30: 自動化部署成功了,然後呢?
系列文
不想吃土嗎?就利用開源軟體打造CICD Pipeline吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言